<extend name="Public/base" />

<block name="body"> <!-- 标题栏 -->
<div class="main-title">
	<h2>数据备份</h2>
</div>
<!-- /标题栏 -->

<div class="cf">
	<a id="export" class="btn" href="javascript:;" autocomplete="off">立即备份</a>
	<a id="optimize" class="btn" href="{:U('optimize')}">优化表</a> <a
		id="repair" class="btn" href="{:U('repair')}">修复表</a>
</div>

<!-- 应用列表 -->
<div class="data-table table-striped">
	<form id="export-form" method="post" action="{:U('export')}">
		<table>
			<thead>
				<tr>
					<th width="48"><input class="check-all" checked="chedked"
						type="checkbox" value=""></th>
					<th>表名</th>
					<th width="120">数据量</th>
					<th width="120">数据大小</th>
					<th width="160">创建时间</th>
					<th width="160">备份状态</th>
					<th width="120">操作</th>
				</tr>
			</thead>
			<tbody>
				<volist name="list" id="table">
				<tr>
					<td class="num"><input class="ids" checked="chedked"
						type="checkbox" name="tables[]" value="{$table.name}"></td>
					<td>{$table.name}</td>
					<td>{$table.rows}</td>
					<td>{$table.data_length|format_bytes}</td>
					<td>{$table.create_time}</td>
					<td class="info">未备份</td>
					<td class="action"><a class="ajax-get no-refresh"
						href="{:U('optimize?tables='.$table['name'])}">优化表</a>&nbsp; <a
						class="ajax-get no-refresh"
						href="{:U('repair?tables='.$table['name'])}">修复表</a></td>
				</tr>
				</volist>
			</tbody>
		</table>
	</form>
</div>

</block>

<block name="script"> <script type="text/javascript">
	(function($) {
		var $form = $("#export-form"), $export = $("#export"), tables
		$optimize = $("#optimize"), $repair = $("#repair");

		$optimize.add($repair).click(function() {
			$.post(this.href, $form.serialize(), function(data) {
				if (data.status) {
					updateAlert(data.info, 'alert-success');
				} else {
					updateAlert(data.info, 'alert-error');
				}
				setTimeout(function() {
					$('#top-alert').find('button').click();
					$(that).removeClass('disabled').prop('disabled', false);
				}, 1500);
			}, "json");
			return false;
		});

		$export.click(function() {
			$export.parent().children().addClass("disabled");
			$export.html("正在发送备份请求...");
			$.post($form.attr("action"), $form.serialize(), function(data) {
				if (data.status) {
					tables = data.tables;
					$export.html(data.info + "开始备份，请不要关闭本页面！");
					backup(data.tab);
					window.onbeforeunload = function() {
						return "正在备份数据库，请不要关闭！"
					}
				} else {
					updateAlert(data.info, 'alert-error');
					$export.parent().children().removeClass("disabled");
					$export.html("立即备份");
					setTimeout(
							function() {
								$('#top-alert').find('button').click();
								$(that).removeClass('disabled').prop(
										'disabled', false);
							}, 1500);
				}
			}, "json");
			return false;
		});

		function backup(tab, status) {
			status && showmsg(tab.id, "开始备份...(0%)");
			$.get($form.attr("action"), tab, function(data) {
				if (data.status) {
					showmsg(tab.id, data.info);

					if (!$.isPlainObject(data.tab)) {
						$export.parent().children().removeClass("disabled");
						$export.html("备份完成，点击重新备份");
						window.onbeforeunload = function() {
							return null
						}
						return;
					}
					backup(data.tab, tab.id != data.tab.id);
				} else {
					updateAlert(data.info, 'alert-error');
					$export.parent().children().removeClass("disabled");
					$export.html("立即备份");
					setTimeout(
							function() {
								$('#top-alert').find('button').click();
								$(that).removeClass('disabled').prop(
										'disabled', false);
							}, 1500);
				}
			}, "json");

		}

		function showmsg(id, msg) {
			$form.find("input[value=" + tables[id] + "]").closest("tr").find(
					".info").html(msg);
		}
	})(jQuery);
</script> </block>